home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Memphis Amiga Group
/
MAG Disk (1990-09)(Memphis Amiga Group).zip
/
MAG Disk (1990-09)(Memphis Amiga Group).adf
/
sMOVIE
/
source
/
sMOVIEfreemem.c
< prev
next >
Wrap
C/C++ Source or Header
|
1989-12-29
|
2KB
|
83 lines
/* Tidies up after sMOVIE
Martin J. Round. 15-Oct-89
*/
#include "sMOVIE.h"
extern struct GfxBase *GfxBase;
extern struct IntuitionBase *IntuitionBase;
extern struct DosLibrary *DosBase;
extern struct Library *DiskfontBase;
extern struct TextFont *tf[MAXFONTS+1], *font, *defaultfont;
extern struct View v;
extern struct ViewPort vp;
extern struct BitMap b;
extern struct Window *window;
extern char *txstart;
extern int fonts,textsiz,cmdsiz,bitmapheight,maxwidth,maxdepth;
extern short *cmdstart;
extern BPTR _Backstdout;
void free_memory(level)
int level; /* indicates what to try and free */
{
int i;
switch (level) {
case 10:
for(i=0; i<maxdepth; i++)
FreeRaster(b.Planes[i],maxwidth,bitmapheight);
case 9:
FreeColorMap(vp.ColorMap);
case 8:
FreeVPortCopLists(&vp);
FreeCprList(v.LOFCprList);
FreeCprList(v.SHFCprList);
case 7:
cmdsiz = rlsmem((char *)cmdstart,cmdsiz * sizeof(short));
case 6:
textsiz = rlsmem(txstart,textsiz);
case 5:
if (fonts) {
for (i=fonts-1; i>=0; i--)
if (tf[i])
CloseFont(tf[i]);
CloseLibrary((struct Library *)DiskfontBase);
}
case 4:
CloseFont(defaultfont);
case 3:
if (window) CloseWindow(window);
CloseLibrary((struct Library *)GfxBase);
case 2:
CloseLibrary((struct Library *)DosBase);
case 1:
CloseLibrary((struct Library *)IntuitionBase);
break;
} /* switch */
if (_Backstdout) Close(_Backstdout);
} /* end of free_memory */
void off_sprite() { /* kludge 'cos OFF_SPRITE won't work for me */
unsigned short *addr;
addr = (unsigned short *) 0x0dff096;
*addr = 0x0020;
}
void on_sprite() { /* kludge 'cos ON_SPRITE won't work for me */
unsigned short *addr;
addr = (unsigned short *) 0x0dff096;
*addr = 0x8020;
}